My-library.info
Все категории

Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин. Жанр: Программирование год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Графические интерфейсы пользователя Java
Дата добавления:
14 январь 2023
Количество просмотров:
79
Читать онлайн
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин

Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин краткое содержание

Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин - описание и краткое содержание, автор Тимур Сергеевич Машнин, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info

Эта книга для тех, кто уже знаком с языком программирования Java и хотел бы научиться разрабатывать настольные приложения Java с графическим интерфейсом пользователя.С этой книгой Вы познакомитесь с такими Java библиотеками графического интерфейса пользователя, как AWT, Swing, SWT/JFace и JavaFX.

Графические интерфейсы пользователя Java читать онлайн бесплатно

Графические интерфейсы пользователя Java - читать книгу онлайн бесплатно, автор Тимур Сергеевич Машнин
class="empty-line"/>

Запуск объекта Service осуществляется с помощью метода start,

перезапуск объекта Service – с помощью метода restart,

а сброс объекта Service – с помощью метода reset.

Прерывание выполнения фоновой задачи обеспечивает метод cancel класса Service.

Получить результат выполнения фоновой задачи можно с помощью метода getValue класса Service.

В качестве примера выполнения фоновой задачи в JavaFX-приложении здесь приведен код, в котором индикатор ProgressBar отображает ход вычислений, производимых в фоновом потоке.

Здесь мы создаем индикатор и кнопку.

В обработчике нажатия кнопки мы создаем фоновую задачу, в методе call которой мы вызываем метод updateProgress, передавая прогресс выполнения задачи.

В методе updateProgress мы обновляем индикатор.

Дальше мы запускаем задачу с помощью объекта Service.

И создаем вторую кнопку для сброса индикатора.

Если возникает потребность обновлять JavaFX компоненты в методе call задачи Task, можно использовать метод Platform.runLater с объектом Runnable, в методе run которого обращаться к JavaFX компонентам.

Класс ScheduledService расширяет класс Service, обеспечивая автоматический перезапуск фоновой задачи после успешного выполнения, и при некоторых условиях перезапуск даже в случае сбоя.

При создании объект ScheduledService находится в состоянии READY.

После вызова метода start или restart объект ScheduledService переходит в состояние SCHEDULED на время, указанное свойством delay.

В состоянии RUNNING объект ScheduledService выполняет свою задачу.

По завершении задачи объект ScheduledService переходит в состояние SUCCEEDED, затем в состояние READY, а затем возвращается в состояние SCHEDULED.

Продолжительность пребывания в состоянии SCHEDULED зависит от времени последнего перехода в состояние RUNNING, текущего времени и значения свойства period, которое определяет минимальное время между двумя последовательными прогонами.

Если предыдущее выполнение завершено до истечения значения свойства period, то объект ScheduledService остается в состоянии SCHEDULED до истечения значения свойства period.

В противном случае, если предыдущее выполнение заняло больше времени, чем указанное значения свойства period, объект ScheduledService мгновенно переходит в состояние RUNNING.

В случае, когда задача завершается в состоянии FAILED, объект ScheduledService перезапускается или завершается, в зависимости от значений свойств restartOnFailure, backoffStrategy и maximumFailureCount.

Если свойство restartOnFailure имеет значение false, объект ScheduledService переходит в состояние FAILED и завершает работу.

В этом случае вы можете перезапустить поврежденный объект ScheduledService вручную.

Если свойство restartOnFailure имеет значение true, объект ScheduledService переходит в состояние SCHEDULED и остается в этом состоянии на протяжении всего свойства cumulativePeriod, которое получается в результате вызова свойства backoffStrategy.

Используя свойство cumulativePeriod, вы можете заставить поврежденный объект ScheduledService ждать до следующего прогона.

После успешного завершения ScheduledService свойство cumulativePeriod сбрасывается до значения свойства period.

Когда количество последовательных сбоев достигает значения свойства maximumFailureCount, объект ScheduledService переходит в состояние FAILED и завершает работу.

Любые изменения, которые происходят с свойствами delay и period при запуске объекта ScheduledService, будут учтены на следующей итерации.

Значения по умолчанию для свойств delay и period установлены в 0.

Совместное использование Swing и JavaFX, SWT и JavaFX

Пакет embed. swing платформы JavaFX обеспечивает встраивание JavaFX-сцены в Swing-приложение.

Для этого пакет javafx. embed. swing предоставляет компонент JFXPanel.

Класс JFXPanel расширяет класс swing. JComponent, являющийся базовым классом для всех Swing-компонентов, помещаемых в Swing-контейнеры верхнего уровня JFrame и JDialog.

Класс JFXPanel имеет, помимо унаследованных от класса JComponent, публичные методы, в том числе метод setScene, устанавливающий JavaFX сцену.

При использовании компонента JFXPanel в Swing-приложении необходимо учитывать, что Swing-компоненты обрабатываются в потоке Event Dispatch Thread, а JavaFX-компоненты – в потоке JavaFX Application Thread.

Поэтому для инициализации и изменения графа JavaFX-сцены в Swing-приложении используется метод Platform.runLater.

А для инициализации и изменения Swing-интерфейса используется метод SwingUtilities.invokeLater.

Обратную операцию – встраивание Swing компонентов в JavaFX приложение позволяет класс SwingNode пакета embed. swing.

Здесь мы создаем некий Swing контент, который устанавливаем в узел SwingNode методом setContent.

Делаем мы это в Swing потоке Event Dispatch Thread.

И затем используем этот узел уже в потоке JavaFX Application Thread.

Аналогично пакету embed. swing, пакет embed. swt платформы JavaFX обеспечивает встраивание JavaFX-сцены в SWT-приложение.

Для этого пакет embed. swt предоставляет компонент FXCanvas.

Класс FXCanvas расширяет класс Canvas пакета swt. widgets графической библиотеки SWT, обеспечивающий рисование произвольной графики.

Класс FXCanvas имеет, помимо унаследованных от класса Canvas, публичные методы, в том числе метод setScene, устанавливающий JavaFX сцену.

JavaFX-сцена вставляется в FXCanvas-компонент, а FXCanvas-компонент вставляется в SWT-окно Shell с помощью приведенного здесь шаблона кода.

О библиотеке SWT мы поговорим позже.

Язык FXML

Платформа JavaFX представляет альтернативный Java-коду способ создания графа сцены JavaFX-приложения с помощью языка FXML, являющегося декларативным языком, основанным на языке XML.

Применение языка FXML находится в русле традиций использования декларативных языков для описания графических интерфейсов пользователя.

Использование языка FXML заключается в создании FXML-файла, содержащего описание дочерних узлов корневого узла графа сцены, и загрузки его с помощью статического метода load класса FXMLLoader, возвращающего корневой узел графа сцены.

Преимущество такой модели создания графического интерфейса заключается в том, что изменение графа сцены JavaFX-приложения не требует перекомпиляции Java-кода – FXML-описание интерфейса загружается при запуске JavaFX-приложения.

FXML-файл содержит описание корневой JavaFX-панели AnchorPane с дочерними JavaFX-компонентами Button и Label.

Атрибут onAction компонента Button ссылается на метод handleButtonAction, обрабатывающий нажатие кнопки Button, класса Controller, который определен в качестве контроллера атрибутом fx: controller компонента AnchorPane.

Язык FXML поддерживает шаблон проектирования Model-View-Controller (MVC), разделяющий бизнес-логику, представление данных и взаимодействие с пользователем.

В MVC-терминологии FXML-описание является представлением View, модель Model представляет компонент JavaFX Beans, обеспечивающий данные JavaFX-приложения, а контроллером Controller является Java-класс, реализующий код взаимодействия с пользователем и связывания компонента JavaFX Beans с FXML-описанием графического интерфейса JavaFX-приложения.

Для включения такого контроллера в JavaFX-приложение, его необходимо указать в качестве значения атрибута fx: controller FXML-описания.

FXML-контроллер может реализовывать интерфейс Initializable, имеющий единственный метод initialize, вызываемый средой выполнения для инициализации класса FXML-контроллера и используемый, например, для связывания компонента данных JavaFX Beans с FXML-описанием.

Методу initialize, в качестве аргументов, среда выполнения передает URL-адрес FXML-описания графического интерфейса JavaFX-приложения и ResourceBundle-ресурсы JavaFX-приложения.

URL-адрес FXML-описания и ResourceBundle-ресурсы определяются при вызове в главном классе JavaFX-приложения статического метода load класса FXMLLoader.

Файл ResourceBundle-ресурсов решает задачу локализации строк графического интерфейса и передается как ResourceBundle-объект методу load с помощью статического метода getBundle класса java.util.ResourceBundle.

В пакете приложения можно создать файл с расширением. properties, имя которого без расширения, но предваряя именем пакета, нужно указать в аргументе метода ResourceBundle.getBundle.

Заполнив файл ResourceBundle-ресурсов парами ключ-значение, получить доступ к любому значению можно с помощью метода getString класса ResourceBundle в Java-коде, указав в качестве аргумента ключ, или используя префикс «%» и имя ключа в качестве значения атрибута компонента FXML-описания.

Помимо интерфейса Initializable, FXML-контроллер может использовать аннотацию @FXML пакета javafx. fxml, которая маркирует protected или private поля и методы FXML-контроллера, доступные из FXML-описания.

Чтобы не применять аннотацию @FXML, поля и методы


Тимур Сергеевич Машнин читать все книги автора по порядку

Тимур Сергеевич Машнин - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


Графические интерфейсы пользователя Java отзывы

Отзывы читателей о книге Графические интерфейсы пользователя Java, автор: Тимур Сергеевич Машнин. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.